package com.wrk._2_数组._02_习题;

import java.util.Arrays;
import java.util.Random;

public class _009_求数组鞍点 {
    public static void main(String[] args) {
        //定义二维数组  6*6
        int[][] array = new int[6][6];
        //随机函数给数组赋值
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                array[i][j] = new Random().nextInt(99)+1;
            }
        }
        //所有行依次判断，查找鞍点
        //遍历每一行
        for (int row = 0; row < array.length; row++) {
            //找出第N行的最大值
            int max = array[row][0];
            for (int i = 0; i < array[row].length; i++) {
                if (max <= array[row][i]){
                    max = array[row][i];
                }
            }
            //判断第N行最大值的 列 坐标
            int rowIndex;
            for ( rowIndex =0; rowIndex < array.length; rowIndex++) {
                if (array[row][rowIndex] == max) {
                    break;
                }
            }
            //判断第N行最大值，在所在的列中，的最小值
            int min = array[0][rowIndex];
            for (int j = 1; j <array.length; j++) {
                if ( min >= array[j][rowIndex]){
                    min = array[j][rowIndex];
                }
            }
            //判断是否存在鞍点
            if (max == min){
                //输出鞍点信息
                System.out.println("第"+(row+1)+"行存在鞍点，数组元素为："+max+"，行坐标为："+row+"，列坐标为："+rowIndex);
            }else {
               System.out.println("第"+(row+1)+"不行存在鞍点");
            }
        }
        //打印数组
        System.out.println("======打印二维数组如下======");
        for (int m = 0; m < array.length; m++) {
            System.out.println(Arrays.toString(array[m]));
        }
    }
}
